package org.pictual.util;

import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;

/**
* Caché de datos implementada como LinkedHashMap.
*/

public class Cache<K, V> extends LinkedHashMap<K, V> implements Serializable{

   /** Límite de elementos en caché. */
   private int limit;

   /**
    * Constructor.
    *
    * @param limit
    *            Limite máximo de elementos que tendrá la caché.
    */
   public Cache(int maxLimit) {
       this.limit = maxLimit;
   }

   /**
    * Elimina la entrada más antigua de la caché en el momento de introducir
    * una nueva entrada, sólo cuando se ha alcanzado el límite establecido.
    */
   protected boolean removeEldestEntry(Map.Entry eldest) {
       return size() > this.limit;
   }
}